package com.seafood.service;

import com.seafood.common.PageResult;
import com.seafood.dto.CreateOrderDTO;
import com.seafood.dto.OrderDTO;
import com.seafood.dto.OrderStatisticsDTO;
import com.seafood.entity.Order;

/**
 * 订单服务接口
 */
public interface OrderService {
    
    /**
     * 创建订单
     */
    OrderDTO createOrder(Long userId, CreateOrderDTO createOrderDTO);
    
    /**
     * 根据ID获取订单
     */
    OrderDTO getOrderById(Long id);
    
    /**
     * 获取用户订单列表
     */
    PageResult<OrderDTO> getUserOrders(Long userId, Integer page, Integer size);
    
    /**
     * 获取所有订单列表（管理员）
     */
    PageResult<OrderDTO> getAllOrders(Integer page, Integer size);
    
    /**
     * 更新订单状态
     */
    OrderDTO updateOrderStatus(Long orderId, Order.OrderStatus status);
    
    /**
     * 取消订单
     */
    void cancelOrder(Long orderId, Long userId);
    
    /**
     * 生成订单号
     */
    String generateOrderNumber();

    /**
     * 获取用户订单统计信息
     */
    OrderStatisticsDTO getUserOrderStats(Long userId);
}